package com.cn.wanxi.service.impl;

import com.cn.wanxi.dao.CompanyDao;
import com.cn.wanxi.model.CompanyModel;
import com.cn.wanxi.service.ICompanyService;
import com.cn.wanxi.util.IOTool;
import com.cn.wanxi.util.PathEnum;
import com.cn.wanxi.util.PathNote;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

/**
 * 服务逻辑层
 * 1.数据来源于记事本
 * 2.首先需要一个记事本
 * 3.记事本没有数据---存入数据
 * 4.根据存入的数据进行读取
 * 5.封装成我们需要的数据（对象，集合）
 * ----------------
 * 如果将所有的代码写入一个方法里面，代码非常臃肿，而且难以维护
 * 难以阅读--所以，需要修改代码
 * 一个方法里面只做一件事情
 */
public class CompanyServiceImpl implements ICompanyService {

//    能不能单独将常量提取出来，放在某个地方进行统一管理
//    1.提取到对象
//    2.提取到枚举
//    3.提取到文件

    @Override
    public CompanyModel getCompanyModel() {
//        1.创建文件(根据路径创建文件)--文件路径包括，父路径和文件夹名称

//        File file = IOTool.createNote(PathEnum.PATH.getPath(), PathEnum.FILE_NAME_COMPANY.getPath());
//        2.写入数据,写入到哪里？文件？我们需要这个文件
//        我们需要数据--肯定是从dao层，
//        2.5 封装需要写入的数据
//        List<String> list = setDaoData();
//        写入数据我们需要两个东西，一个 文件，一个  数据
        IOTool.writeData(PathEnum.FILE_NAME_COMPANY.getPath(), setDaoData());
//        3.读取数据
        String result = IOTool.readData();
//        4.封装数据
        return setCompanyModel(result);
    }

    /**
     * 根据读取出来的结果封装成companyModel对象
     *
     * @param result
     * @return
     */
    private CompanyModel setCompanyModel(String result) {

//        System.out.println(result);
//        根据写入数据时，分隔符来得到相应的数据
        String[] split = result.split(PathEnum.SEPARATOR.getPath());
//        System.out.println(split[0] + "-------------");
//        System.out.println(split[1] + "-------------");

//        需要设法读取里面的每一个数据---要封装到对象里面的属性
        CompanyModel companyModel = new CompanyModel();
        companyModel.setLogo(split[0]);
        companyModel.setPhone(split[1]);
        companyModel.setNet(split[2]);
        companyModel.setEmail(split[3]);
        companyModel.setLinePhone(split[5]);
        companyModel.setAddress(split[4]);
        companyModel.setVersion(split[6]);
        return companyModel;
    }

    /**
     * 封装dao成数据
     *
     * @return
     */
    private List<String> setDaoData() {
        List<String> datas = new ArrayList<>();
        CompanyDao companyDao = new CompanyDao();
        datas.add(companyDao.getLogo());
        datas.add(companyDao.getPhone());
        datas.add(companyDao.getNet());
        datas.add(companyDao.getEmail());
        datas.add(companyDao.getAddress());
        datas.add(companyDao.getLinePhone());
        datas.add(companyDao.getVersion());
        return datas;
    }

    public static void main(String[] args) {
//        new CompanyServiceImpl().getCompanyModel();
//        System.out.println(PathEnum.PATH.getPath());
    }


}
